It is known that profiling of application transactions located in several types of containers including web servers, application servers, portal servers and ECM containers such as Documentum, for example, can be done by spending significant amount of resources such as memory. The profiling activity is generally done independently of the execution of the application transactions, thus resulting in double consumption of resources separately for the profiling and the execution of the application transactions.
A brief description of the setting in which the present invention can be practiced is believed to be conducive to a better understanding of the context of the invention. Some of the terms used in the context of the present invention included ECM, Java®, JMX (Java Management Extensions), AOP (Aspect Oriented Programming) and ARM (Application Response Measurement).
ECM in one form includes any of the strategies and technologies employed in the information technology industry for managing the capture, storage, security, revision-control, retrieval, distribution, preservation and destruction of documents and content. ECM especially concerns content imported into or generated from within an organization in the course of its operation, and includes the control of access to this content from outside of the organization's processes.
ECM systems are designed to manage both structured and unstructured content, so that an organization, such as a business or governmental agency, can more effectively meet business goals (increase profit or improve the efficient use of budgets), serve its customers (as a competitive advantage, or to improve responsiveness), and protect itself (against non-compliance, law-suits, uncoordinated departments or turnover within the organization). In a large enterprise, ECM is not regarded as an optional expense where it is essential to content-preservation and re-usability and to the control of access to content, whereas, very small organizations may find their needs temporarily met by carefully managed shared folders, for example. Recent trends in business and government indicate that ECM is becoming a core investment for organizations of all sizes, more immediately tied to organizational goals than in the past, as well as increasingly more central to what an enterprise does, and how it accomplishes its mission.
Java Platform, Enterprise Edition (Java EE) is the industry standard for developing portable, robust, scalable and secure server-side Java applications. Building on the solid foundation of Java Se, Java EE provides web services, component model management, and communications APIs (Application Programming Interfaces) that make it the industry standard or preference for implementing enterprise class service-oriented architecture (SOA) and Web 2.0 applications.
In software engineering, the programming paradigms of AOP and Aspect Oriented Software Development (AOSD) attempt to aid programmers in the separation of concerns, specifically cross-cutting concerns, as an advance in modularization. AOP does so using primarily language changes, while AOSD uses a combination of language, environment, and method.
In computer science as known, crosscutting concerns are aspects of a program that affect (crosscut) other concerns. These concerns often cannot be cleanly decomposed from the rest of the system in both the design and implementation, and result in either scattering or tangling of the program or both.
Aspect-Oriented Programming (APO) complements Object Oriented (OO) programming by allowing the developer to dynamically modify the static OO model to create a system that can grow to meet new requirements. Just as objects in the real world can change their states during their lifecycles, an application can adopt new characteristics as it develops.
Aspect-oriented software development (AOSD) is a new approach to software development that addresses limitations inherent in other approaches, including object-oriented programming. AOSD aims to address crosscutting concerns by providing means for systematic identification, separation, representation and composition. Crosscutting concerns are encapsulated in separate modules, known as aspects, so that localization can be promoted.
AOP complements object-oriented programming by allowing the developer to dynamically modify the static object-oriented model to create a system that can grow to meet new requirements, allowing an application to adopt new characteristics as it develops. AOP provides a solution for abstracting cross-cutting code that spans object hierarchies without functional relevance to the code it spans.
In AOP, ‘advice’ is the code that is applied to, or cross-cuts, the existing object model.
AspectJ is one concept of AOP originated by the XeroxPARC team which is used as the first and most popular AOP language. Most discussions of AOP use AspectJ, if only as a lingua franca for expressing crosscutting that is otherwise implemented.
Any AOP language has some crosscutting expressions that encapsulate the concern in one place. The difference between AOP languages lies in the power, safety, and usability of the approaches provided, e.g., interceptors that specify the methods to intercept and express a limited form of crosscutting, without much support for type-safety or debugging. AspectJ has a number of such expressions and encapsulates them in a special class, known as an ‘aspect’. For example, an aspect can alter the behavior of the base code (the non-aspect part of a program) by applying advice (additional behavior) at various join points (points in a program) specified in a quantification or query called a pointcut (that detects whether a given join-point matches), an aspect that can also make binary-compatible structural changes to other classes, like adding members or parents
Many AOP languages support method executions and field references as join points. In them the developer can write a pointcut to match, for example, all field-set operations on specific fields, and code to run when the field is actually set. Some also support aspects like defining a method in an aspect on another class. AOP languages can be compared based on the join points they expose, the language they use to specify the join points, the operations permitted at the join points, and the structural enhancements that can be expressed. AOP enables the developer to better separate tasks that should not be inextricably tangled, such as mathematical operations and exception-handling. The AOP approach has a number of benefits. First, it improves performance because the operations are more succinct. Second, it allows programmers to spend less time rewriting the same code. Overall, AOP enables better encapsulation of distinct procedures and promotes future interoperation. One fully featured AOP framework which is very useful to designers is Aspectwerkz, which as known is created by Jonas Boner and Alexndre Vasseur, Aspectwerkz, and is sufficiently versatile to be of great use to most developers in many situations.
Another concept that is relevant in the context of the present invention is “separation of concerns”. Separation of concerns as understood herein entails breaking down a program into distinct parts that overlap in functionality as little as possible. All programming methodologies, including procedural programming and object-oriented programming, support some separation and encapsulation of concerns (or any area of interest or focus) into single entities. For example, procedures, packages, classes, and methods all help programmers encapsulate concerns into single entities. But some concerns defy these forms of encapsulation. Software engineers call these crosscutting concerns, because they cut across many modules in a program. Logging offers one example of a crosscutting concern, because a logging strategy necessarily affects every single logged part of the system. Logging thereby crosscuts all logged classes and methods.
Application Response Measurement (ARM) is an open standard which enables monitoring and diagnosing performance bottlenecks within complex enterprise applications that use loosely-coupled designs or service-oriented architectures. It includes an API for C and Java that allows timing information associated with each step in processing a transaction to be logged to a remote server for later analysis. As of 2006, version 4.0 is known as the latest version of the ARM standard.
The ARM version of API (Application Programming Interface) is understood as a set of standard API calls that enable measurement and the performance of applications. API is mainly used to measure response time, but can also be used to record application availability usage.
The term “Application” is generally understood as a program or group of programs designed for end users. Software can be divided into two general classes: systems software and applications software. Systems software consists of low-level programs that interact with the computer at a very basic level. This includes operating systems, compilers, and utilities for managing computer resources. In contrast, applications software (also called end-user programs) includes database programs, word processors, and spreadsheets. Figuratively speaking, applications software sits on top of systems software because it is unable to run without the operating system and system utilities.
There is generally need for developing a method for profiling and auditing applications without the excessive use of valuable resources to complete profiling activity.